Skip to main content
Version: Current

三、启动方式

EM20-DK 支持多种启动方式,包括:

  • 从 Micro SD 启动:预装有操作系统的 Micro SD
  • 从 eMMC 启动: eMMC 设备经过镜像烧录后启动
  • 从网络 PXE 启动: 预装有操作系统的 Micro SD 或 eMMC
  • 从网络 NFS 启动: 预装有操作系统的 Micro SD 或 eMMC

3.1 Micro SD 启动

开发板出厂时通常会附带一张预装操作系统的 Micro SD 启动卡。该启动卡不仅能够启动开发板,还提供了一些比较基础的可执行程序。用户可以通过探索这些程序了解开发板的基本功能,从而建立对开发板和 SDK 的初步认知。

如需制作新的启动卡或替换现有启动卡,请按照以下步骤操作:

3.1.1 下载镜像

获取镜像的流程如下:

  1. 获取 SDK 镜像包
  2. 解压镜像包,在 ta-image/firmware 目录下提取其中的 sdcard.img 文件作为烧录文件

3.1.2 使用 balenaEtcher 烧录镜像

我们推荐使用 balenaEtcher 来烧录镜像,这是一款在 macOS、Windows 和 Linux 系统均可使用的镜像烧录工具。

烧录镜像的具体步骤如下:

  1. 选择镜像

    打开 balenaEtcher,点击 从文件烧录

    从弹出的窗口中选择刚下载的 sdcard.img,选择之后的界面如图。

  2. 选择 SD 卡

    点击 选择目标磁盘,勾选目标 SD 卡,然后点击 选定

    此时界面如下图所示。

  3. 开始烧录

    点击 现在烧录

    烧录过程中界面如下。

    烧录完成后会出现 正在验证 的界面。

💡 提示:

  • 如果觉得验证比较耗时,可以点击“跳过”,不会影响烧录。
  1. 烧录完成

    烧录完成后会出现 烧录成功 的提示界面。

3.1.3 检查启动卡

制作完烧录卡后,将卡插入 Ubuntu 系统,可以发现出现 2 个分区(bootfs 分区和 rootfs 分区),具体定义如下:

  1. 启动分区(盘符名 bootfs)

启动分区用于存储系统启动过程中所需的各类文件,包括引导程序、内核镜像等。该启动分区通常采用 FAT32 文件系统格式,以确保兼容性。启动分区包含的主要文件说明如下:

  • kernel.itb:内核镜像文件
  • u-boot.itb:引导程序文件
  • fw_jump.bin:固件文件(如果适用)
  1. 根文件系统分区(盘符名 rootfs)

根文件系统分区是 Micro SD 卡上用于存储操作系统核心文件的重要区域,是文件系统的最高层级目录,包括系统的命令库、配置文件、驱动程序等,根分区通常为 ext4 文件系统格式。

Code block
.
├── bin -> usr/bin # 存放系统的基础命令,如ls、cp、mv等
├── bin.usr-is-merged
├── boot
├── dev # 设备文件,用来与硬件交互
├── etc # 存放系统配置文件,如网络配置、用户配置等
├── home # 存放系统用户的家目录
├── lib -> usr/lib # 存放系统运行所需的共享库文件
├── lib.usr-is-merged
├── media
├── mnt
├── opt
├── proc
├── run
├── sbin -> usr/sbin # 存放系统管理命令
├── sbin.usr-is-merged
├── srv # 存放服务相关的文件
├── sys # 存放系统运行时的信息
├── tmp # 临时文件存放目录
├── usr # 用户应用程序和文件的存放目录
└── var # 存放系统运行时产生的可变数据

完成启动卡制作后,可以参考 「EM20-DK 使用技术手册」文档的「开机」章节 的相关内容启动开发套件。

📝 注意:

如果用户使用的是 Windows 操作系统,则无需手动管理这些分区,安装程序会自动设置,如果需要手动管理这些分区,可以采用 Windows 操作系统自带的磁盘管理工具进行管理。

3.2 eMMC 启动

需要制作一张 Micro SD 烧录卡,并把镜像正确烧录到 eMMC,具体烧录步骤可参考「EM20-DK 使用技术手册」文档的「Micro SD 卡烧录 eMMC 升級」章节 的相关内容。拔出 Micro SD ,按复位键重启即为 eMMC 启动。

3.3 网络 PXE 启动

需要制作一张 Micro SD 烧录卡或者已被正确烧录过的 eMMC,PXE 启动会在仅使用 Boot.frconfig.txt 的情况下通过网络去启动系统。 要从网络 PXE 启动,首先需要在电脑端配置 TFTP 和 NFS 服务器,然后开发板端完成配置并启动。

3.3.1 配置 TFTP 服务器

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
sudo mkdir -p /pxe_server/tftp
sudo chmod 777 /pxe_server/tftp

修改 /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/pxe_server/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

创建 PXE 目录

sudo mkdir -p /pxe_server/tftp/pxelinux.cfg

创建 PXE 配置文件

pxelinux.cfg 目录下创建对应的 PXE 配置文件,文件名格式为 01-xx-xx-xx-xx-xx-xx,其中 01- 为固定字段,后面紧跟开发板的 MAC 地址。

例如,针对 MAC 地址为 e6:e8:dc:ff:db:da 的开发板,应创建文件 /pxe_server/tftp/pxelinux.cfg/01-e6-e8-dc-ff-db-da

default Ubuntu Linux-6.6
menu title ULTIMATE PXE SERVER - By Griffon - Ver 1.0
prompt 0
timeout 0

label Ubuntu Linux-6.6
kernel uImage
initrd rootfs.cpio.uboot

复制镜像文件

将 Micro SD 卡 bootfs 分区文件 Boot.frfw_jump.binkernel.itbrootfs.cpio.ubootu-boot.itboverlays 目录复制到 /pxe_server/tftp/ 目录下。在开发时可对应替换为自己的镜像文件。

启动 TFTP 服务器

sudo service tftpd-hpa restart

注意:针对不同开发板要烧录不同内核镜像和设备树,只需在 pxelinux.cfg 目录下创建对应的 PXE 配置文件即可。

3.3.2 配置 NFS 服务器

安装 NFS 服务

sudo apt-get install nfs-kernel-server rpcbind

修改 /etc/exports,在文件末尾添加(注意:路径和 * 之间有个空格):

/srv/nfs/rootfs *(rw,sync,no_root_squash)

其中 /srv/nfs/rootfs 为 NFS 文件系统挂载路径。

修改 /etc/default/nfs-kernel-server,在文件末尾添加:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

复制镜像文件

将 Micro SD 卡 rootfs 分区下所有文件及目录复制到 /srv/nfs/rootfs 目录下。在开发时可对应替换为自己定制的文件系统。

启动 NFS 服务

sudo systemctl restart nfs-kernel-server

3.3.3 配置开发板

完成服务器端配置后,需要在开发板端进行相应的网络启动参数配置。开发板通过修改 bootfs 分区下的 config.txt 文件来设置网络启动相关参数,具体配置示例如下:

# 使能PXE
force_pxe=true
# 从eth1启动
ethact=eth1
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs

完成配置文件的修改后,重新上电即可通过网络启动系统。启动成功后,启动日志中会看到打印 Now switch to pxe boot 字样。关于 config.txt 文件中各配置变量的详细说明,请参考「BSP 开发技术手册」文档的「config.txt 使用说明」章节的相关内容。

3.4 网络 NFS 启动

网络 NFS 启动需要准备一张 Micro SD 烧录卡或已正确烧录的 eMMC 设备。NFS 启动会在挂载文件系统时通过网络去加载。开发板端需要修改 bootfs 分区下的 config.txt 文件,具体配置示例如下:

# 必须关闭PXE
force_pxe=false
# 从eth0启动
ethact=eth0
# 服务器IP地址
serverip=192.168.56.99
# NFS文件系统挂载路径
rootpath=/srv/nfs/rootfs
# 使能nfs
nfs=true

完成配置文件的修改后,重新上电即可通过网络挂载文件系统。关于 config.txt 文件中各配置变量的详细说明,请参考「BSP 开发技术手册」文档的「config.txt 使用说明」章节的相关内容。NFS 服务器搭建可参考上述 3.3.2 配置 NFS 服务器 的相关内容。